%{

#include <cstdlib>
#include <cstdio>

extern FILE* yyin;
extern int yyleng;
extern char* yytext;
extern int yylex ();
extern int yyparse ();
extern int yyerror ( char* message );

/*
	Le fichier.l qu'on recupere en entrée est formé de trois blocs (BLOC1,2,3) essentiels et un bloc(BLOC1_2) de transition. Dans ce bloc on définit les variables d'environnements, les blocs.

	codeC peut entre la suite de n'importe quels caracteres. Ce n'est pas à nous de verifier ce code C, C++, c'est le compilateur central qui va l'analyser.

	Une regle est formée d'une expression reguliere, une separateur de tabulation ou bien d'espace.


*/

%}

%token dblePrc
%token codeC
%token expReg
%token sep
%token instr
%token nvlle_ligne
%token acc_ouv
%token acc_fer
%token etoile
%token plus
%token point_int
%token partie1

%start CFile

%%

CFile		:	Bloc1 dblePrc Bloc2 dblePrc Bloc3
		;

Bloc1		:	codeC Bloc1
		|
		;

Options 	:	etoile 
		|	plus
		|	point_int
		|
		;

Regle		:	ExpReg sep instr
		;

ExpReg		:	partie1 Options
		;


Bloc2		:	Regle nvlle_ligne Bloc2
		|	Regle
		|
		;


Bloc3		:	codeC Bloc3
		|
		;


%%
